bitkeeper revision 1.308 (3f0ae161layZNlO8Hy90LYzFcZ9fkQ)
authorsos22@labyrinth.cl.cam.ac.uk <sos22@labyrinth.cl.cam.ac.uk>
Tue, 8 Jul 2003 15:21:05 +0000 (15:21 +0000)
committersos22@labyrinth.cl.cam.ac.uk <sos22@labyrinth.cl.cam.ac.uk>
Tue, 8 Jul 2003 15:21:05 +0000 (15:21 +0000)
Final bit of merge.

xenolinux-2.4.21-sparse/arch/xeno/drivers/dom0/dom0_core.c

index 2d09f702bef529a24ce43f3b2ebcba3c04bec3a7..496a8ce2793c7b59cc912eb8a16108abf84bf6b5 100644 (file)
@@ -45,8 +45,9 @@ struct proc_dir_entry *xeno_base;
 static struct proc_dir_entry *dom0_cmd_intf;
 static struct proc_dir_entry *dom_list_intf;
 
-int direct_unmap(unsigned long, unsigned long);
 int direct_unmap(struct mm_struct *, unsigned long, unsigned long);
+unsigned long direct_mmap(unsigned long phys_addr, unsigned long size, 
+                         pgprot_t prot, int tot_pages);
 
 static ssize_t dom_usage_read(struct file * file, char * buff, size_t size, loff_t * off)
 {
@@ -145,113 +146,6 @@ static void create_proc_dom_entries(int dom)
     }
 }
 
-static ssize_t dom_mem_write(struct file * file, const char * buff, 
-                             size_t size , loff_t * off)
-{
-    dom_mem_t mem_data;
-    
-    printk("dom_mem_write called: Shouldn't happen.\n");
-
-    copy_from_user(&mem_data, (dom_mem_t *)buff, sizeof(dom_mem_t));
-    
-    if ( direct_unmap(mem_data.vaddr, 
-                      mem_data.tot_pages << PAGE_SHIFT) == 0 ) {
-        return sizeof(sizeof(dom_mem_t));
-    } else {
-        return -1;
-    }
-}
-
-static ssize_t dom_mem_read(struct file * file, char * buff, size_t size, loff_t * off)
-{
-    unsigned long addr;
-    pgprot_t prot;
-
-    proc_memdata_t * mem_data = (proc_memdata_t *)((struct proc_dir_entry *)file->f_dentry->d_inode->u.generic_ip)->data;
-
-    prot = PAGE_SHARED; 
-
-    /* remap the range using xen specific routines */
-
-    printk("Calling direct_mmap with pfn %x, tot pages %x.\n",
-          mem_data->pfn, mem_data->tot_pages);
-
-    addr = direct_mmap(mem_data->pfn << PAGE_SHIFT, mem_data->tot_pages << PAGE_SHIFT, prot, MAP_DISCONT, mem_data->tot_pages);
-    
-    copy_to_user((unsigned long *)buff, &addr, sizeof(addr));
-
-    return sizeof(addr);
-}
-
-struct file_operations dom_mem_ops = {
-    read:    dom_mem_read,
-    write:   dom_mem_write,
-};
-
-static int dom_map_mem(unsigned int dom, unsigned long pfn, int tot_pages)
-{
-    int ret = -ENOENT;
-    struct proc_dir_entry * pd = xeno_base->subdir;
-    struct proc_dir_entry * file;
-    proc_memdata_t * memdata;
-
-    while(pd != NULL){
-
-        if((pd->mode & S_IFDIR) && ((dom_procdata_t *)pd->data)->domain == dom){
-
-            /* check if there is already an entry for mem and if so
-             * remove it.
-             */
-           /* XXX does this not leak the memdata? */
-            remove_proc_entry("mem", pd);
-
-            /* create new entry with parameters describing what to do
-             * when it is mmaped.
-             */
-            file = create_proc_entry("mem", 0600, pd);
-            if(file != NULL)
-            {
-                file->owner = THIS_MODULE;
-                file->nlink = 1;
-                file->proc_fops = &dom_mem_ops;
-
-                memdata = (proc_memdata_t *)kmalloc(sizeof(proc_memdata_t), GFP_KERNEL);
-                memdata->pfn = pfn;
-                memdata->tot_pages = tot_pages;
-                file->data = memdata;
-
-                ret = 0;
-                break;
-            }
-
-            ret = -EAGAIN;
-            break;
-        }                    
-        pd = pd->next;
-    }
-
-    return ret;
-}
-
-/* function used to retrieve data associated with new domain */
-static ssize_t dom_data_read(struct file * file, char * buff, size_t size, loff_t * off)
-{
-    dom0_newdomain_t * dom_data = (dom0_newdomain_t *)
-        ((struct proc_dir_entry *)file->f_dentry->d_inode->u.generic_ip)->data;
-
-    copy_to_user((dom0_newdomain_t *)buff, dom_data, sizeof(dom0_newdomain_t));
-
-    remove_proc_entry("new_dom_data", xeno_base);
-
-    kfree(dom_data);
-
-    return sizeof(dom0_newdomain_t);
-}
-
-struct file_operations newdom_data_fops = {
-    read:    dom_data_read,
-};
-
 static int dom0_cmd_write(struct file *file, const char *buffer, size_t size,
                          loff_t *off)
 {
@@ -447,7 +341,7 @@ static int handle_dom0_cmd_unmapdommem(unsigned long data)
     return -EFAULT;
 
   return direct_unmap(current->mm, argbuf.vaddr,
-                     argbuf.tot_pages << PAGE_SIZE);
+                     argbuf.tot_pages << PAGE_SHIFT);
 }
 
 static int dom0_cmd_ioctl(struct inode *inode, struct file *file,